def test(a=1,b=2,c=3):
    print("this is test",a,b,c)
    return a+b+c

def log(fn):
    def wrapper(a,b,c):
        print(fn.__name__ + " 函数开始执行....")
        res = fn(a,b,c)
        print(fn.__name__ + " 函数执行结束....")
        return res
    return wrapper

test = log(test)

p = test(5,6,7)
print(p)

# 1. 编码题
# 编写一个函数 make_counter(initial_value)，
# 该函数返回一个计数器函数。每次调用计数器函数时，计数器值增加 1，并返回当前值。
# 计数器的初始值由参数 initial_value 指定。

# 2.阅读代码题 (打印什么? 为什么?)
def create_adders():
    adders = []
    for i in range(3):
        def adder(x):
            return i + x #x=10
        adders.append(adder)
    return adders

# adders :[adder,adder,adder]
for adder in create_adders():
    print(adder(10))